# -*- coding: utf-8 -*-
# @Author: QX
# @File: conftest.py
import logging

import allure
import jsonpath
import pytest

from core.globalContext import g_context
from extend.keyworks import Keywords

keyword=Keywords()
@pytest.fixture(scope='function')
def get_token():

    # TODO    1: 确定请求数据，发送请求
    url = "http://shop-xo.hctestedu.com/index.php?s=api/user/login"
    public_data = {"application": "app", "application_client_type": "weixin"}
    data = {"accounts": "hami", "pwd": "123456", "type": "username"}

    # TODO    2: 获取响应数据进行断言, 注意返回的是一个列表
    #1.发送请求   2.获取数据
    #组装
    senddata = {'url':url,'params':public_data,'data':data}
    res=keyword.request_post(**senddata)

    # TODO    4: 获取token数据, 注意返回的是一个列表
    token=jsonpath.jsonpath(res.json(), '$..token')[0]
    return token


@pytest.fixture(scope='session')

def get_dict_token():

    # TODO    1: 确定请求数据，发送请求
    url = "http://shop-xo.hctestedu.com/index.php?s=api/user/login"
    public_data = {"application": "app", "application_client_type": "weixin"}
    data = {"accounts": "hami", "pwd": "123456", "type": "username"}

    # TODO    2: 获取响应数据进行断言, 注意返回的是一个列表
    #1.发送请求   2.获取数据
    #组装
    senddata = {'url':url,'params':public_data,'data':data}
    res=keyword.request_post(**senddata)

    # TODO    4: 获取token数据, 注意返回的是一个列表
    token=jsonpath.jsonpath(res.json(), '$..token')[0]
    g_context().set_dict('token',token)
    print('====token====',token)

# @pytest.hookimpl(hookwrapper=True, tryfirst=True)
# def pytest_runtest_makereport(item, call):
#     # 通过 out = yield 定义了一个生成器。在生成器中，res = out.get_result() 获取了测试结果对象。
#     out = yield
#     res = out.get_result()
#     #  res.when == "call"：表示正在运行调用测试函数的阶段。
#     if res.when == "call":
#         logging.info(f"用例ID：{res.nodeid}")
#         logging.info(f"测试结果：{res.outcome}")
#         logging.info(f"故障表示：{res.longrepr}")
#         logging.info(f"异常：{call.excinfo}")
#         logging.info(f"用例耗时：{res.duration}")
#         logging.info("**************************************")
#
# import datetime,logging,os
# LOG_PATH = './logs'  # 请替换为你的实际路径
# def pytest_configure(config):
#     now = datetime.datetime.now()
#     date_str = now.strftime("%Y-%m-%d_%H-%M-%S")  # 添加时间戳到日志文件名
#     log_file_name = f'pytest_{date_str}.log'  # 使用带有时间戳的日志文件名
#     # 构建完整的文件路径
#     full_log_path = os.path.join(LOG_PATH, log_file_name)
#     config.option.log_file = full_log_path
#     config.option.log_file_mode = 'a'  # 设置日志文件以追加模式打开